Ledger
by Kristofer Younger, NeXT Systems Engineering
	(with help from Joe Freeman's runtime wizardry)

Overview

Ledger is a simple example of using  IXRecordManagers for the storage of simple transaction data. It uses DBTableViews to disply the list of data held by each IXRecordManager.

Program Organization

Major Classes in the Application
 
LedgerController	 Used to maintain the Ledger document - controls all access from the UI into the IXRecordManager.
 
 MainDelegate	Contains the schema information and the controller methods for the simple Account management. (Add, Open, Close, etc.)

 MoneyWell	Used to handle the transfer of non-zero amounts from one account to another. Uses the new 3.0 drag service.

 JFTableViewLoader 	This object loads and provides editing for data bearing objects fronted by a DBTableView. It uses two lists, a data list and a config list. The data list holds the data bearing objects Ð in this case, it is an IXPostingList of Transaction objects. The config list holds JFTableVectorConfiguration objects, used to bind columns in the DBTableView to ivars in the data bearing objects. This object knows how to fill the DBTableView and how to pass edits from the DBTableView back into the objects in the data list.

Other Peculiarities
GlobalThings	Keeps a monotonically increasing serial number to label the Transaction objects so that they stay in order. There is an IXAttribute (index) on this ivar used to order the transactions in the tableview (of the LedgerController.)

	This is the view of the schema inside of the Ledger.store. The named objects are in "" and the classes of these objects are in (). 

¬

Generally, the idea is to show how to use IXRecordManagers, IXPostingLists, and DBTableViews to build a simple recordkeeping application.

Other References

Make sure you look through Chapter 7 of the NeXTSTEP General Reference.
This example uses IXKit extensively, so it is valid for 3.0 and 3.1.

Change History (optional)

06/Jan/93	First release of Ledger Code.
23/Jan/93	Cleaned up for 3.1 release.